<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Fragmentation (informatique)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Fragmentation_(informatique)"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Fragmentation_informatique rootpage-Fragmentation_informatique skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Fragmentation (informatique)</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p>En <a href="Informatique" title="Informatique">informatique</a>, la <b>fragmentation</b> peut désigner plusieurs concepts :
</p>
<ul><li>la fragmentation d'un <a href="Disque_dur" title="Disque dur">disque dur</a>,</li>
<li>la fragmentation de la <a href="M%C3%A9moire_vive" title="Mémoire vive">mémoire vive</a>,</li>
<li>la fragmentation des paquets dans les <a href="R%C3%A9seau_informatique" title="Réseau informatique">réseaux informatiques</a> à <a href="Commutation_de_paquets" title="Commutation de paquets">commutation de paquets</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="La_fragmentation_d'un_disque_dur"><span id="La_fragmentation_d.27un_disque_dur"></span>La fragmentation d'un disque dur</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Principe_de_fragmentation">Principe de fragmentation</h3></div>
<p>Le <a href="Disque_dur" title="Disque dur">disque dur</a> d'un ordinateur est divisé en <a href="Secteur_informatique" class="mw-redirect" title="Secteur informatique">secteurs</a> et le <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a> les rassemble pour former des <a href="Bloc_(disque_dur)" class="mw-redirect" title="Bloc (disque dur)">blocs</a> (<span class="lang-en" lang="en"><i>clusters</i></span> en anglais). Ainsi, un fichier est contenu sur un nombre entier de blocs : le dernier bloc n'est pas toujours entièrement rempli de données.
</p><p>Chaque fichier utilise donc plusieurs blocs. Si les blocs contenant le fichier sont contigus, celui-ci n'est pas fragmenté. Toutefois, en pratique, les blocs d'un fichier sont généralement éparpillés par groupes, d'où la fragmentation du fichier.
</p>
<div class="mw-heading mw-heading3"><h3 id="Analogie">Analogie</h3></div>
<p>Reprenons l'exemple de Roberto Di Cosmo<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>, en simplifiant.
</p><p>Assimilons le disque dur à une grande armoire à tiroirs, tous de même taille, dans laquelle on rangerait des dossiers.
</p><p>Au départ, tous les tiroirs sont vides, et la personne peut remplir les premiers tiroirs sans problème. Des dossiers sont retirés, ce qui amène des trous dans la rangée des tiroirs. Un problème se pose alors lorsqu'un dossier est trop grand pour rentrer intégralement dans un des emplacements vides. Le dossier est alors séparé en plusieurs morceaux puis réparti dans des cases vides.
</p><p>Maintenant, si la personne doit aller chercher ce dossier, elle doit aller chercher les différentes parties du dossier à des endroits différents, ce qui prend plus de temps que si l'intégralité du dossier était stockée au même endroit. Pour y remédier, il suffit que, régulièrement, quelqu'un s'occupe de réorganiser toute l'armoire en rassemblant les éléments de chaque dossier, ce qu'on appelle la <a href="D%C3%A9fragmentation_(informatique)" title="Défragmentation (informatique)">défragmentation</a>.
</p><p>Ce mode de fonctionnement est actuellement utilisé par les ordinateurs fonctionnant sous <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a>, plus précisément, c'est le mode de fonctionnement des systèmes de fichiers <a href="New_Technology_File_System" class="mw-redirect" title="New Technology File System">NTFS</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="La_fragmentation_selon_le_système_d'exploitation"><span id="La_fragmentation_selon_le_syst.C3.A8me_d.27exploitation"></span>La fragmentation selon le système d'exploitation</h3></div>
<div class="mw-heading mw-heading4"><h4 id="Le_cas_des_dérivés_d'UNIX"><span id="Le_cas_des_d.C3.A9riv.C3.A9s_d.27UNIX"></span>Le cas des dérivés d'UNIX</h4></div>
<p>Tous les systèmes <a href="UNIX" class="mw-redirect" title="UNIX">UNIX</a> ont la même gestion de la fragmentation. Le <a href="Noyau_de_syst%C3%A8me_d'exploitation" title="Noyau de système d'exploitation">noyau</a> calcule le nombre de blocs nécessaires au stockage de chaque fichier sur le disque dur. Si un tel nombre de <span class="lang-en" lang="en"><i>clusters</i></span> libres contigus est trouvé sur le disque, il stocke le fichier sur ces <span class="lang-en" lang="en"><i>clusters</i></span>, contigus, et le fichier n'est pas fragmenté. S'il ne trouve pas assez de <span class="lang-en" lang="en"><i>clusters</i></span> libres contigus, il scinde le fichier en plusieurs groupes de <span class="lang-en" lang="en"><i>clusters</i></span> et éparpille ces groupes sur le disque dur : il tente de minimiser le nombre de groupes et par conséquent remplit les plus grands espaces de <span class="lang-en" lang="en"><i>clusters</i></span> vides contigus en premier.
</p>
<div class="mw-heading mw-heading4"><h4 id="Le_cas_de_Microsoft_Windows">Le cas de Microsoft Windows</h4></div>
<p>Le <a href="Noyau_Windows_NT" title="Noyau Windows NT">noyau NT</a> essaie de combler les trous dans le sens où il fragmente le fichier pour ne pas laisser au début du disque, des zones avec des <span class="lang-en" lang="en"><i>clusters</i></span> libres.
</p>
<div class="mw-heading mw-heading3"><h3 id="Cas_dans_lesquels_survient_la_fragmentation">Cas dans lesquels survient la fragmentation</h3></div>
<p>Dans les systèmes Unix, la fragmentation fait suite à un espace disque trop faible.
</p><p>Pour Microsoft Windows, la fragmentation trouve sa source dans les multiples suppressions, modifications, copies de fichiers sur le disque dur, qui favorisent l'apparition de zones de <span class="lang-en" lang="en"><i>clusters</i></span> libres, et par conséquent la fragmentation. Elle est donc fréquente sur les Systemes Windows car il est courant pour un utilisateur de manipuler des fichiers.
</p>
<div class="mw-heading mw-heading3"><h3 id="Atteinte_sur_les_performances">Atteinte sur les performances</h3></div>
<p>Si la fragmentation est si problématique, c'est parce qu'elle engendre des problèmes au niveau physique.
</p><p>Lorsqu'un fichier n'est pas fragmenté, la tête de lecture du <a href="Disque_dur" title="Disque dur">disque dur</a> n'a pas besoin de se déplacer, ou très peu, puisque les <span class="lang-en" lang="en"><i>clusters</i></span> sont les uns à la suite des autres.
</p><p>À l'inverse, si le fichier est fragmenté, la tête de lecture va faire de multiples aller-retours pour lire chacun des groupes de <span class="lang-en" lang="en"><i>clusters</i></span> : se déplacer prend du temps, donc plus le fichier est fragmenté, plus le temps pour accéder à son contenu est élevé.
</p>
<div class="mw-heading mw-heading2"><h2 id="Fragmentation_de_la_mémoire_vive"><span id="Fragmentation_de_la_m.C3.A9moire_vive"></span>Fragmentation de la mémoire vive</h2></div>
<p><b>La fragmentation</b> est un problème qui survient quand on dispose d'une partie libre de la mémoire mais qu'on ne peut pas allouer à un programme.
</p><p>On distingue deux types de fragmentation:
</p><p><b>-Fragmentation interne :</b> elle a lieu lorsqu'une partie d'une page est libre et la taille de la dernière partie du processus est inférieure à la taille d'une page.
</p><p><b>-Fragmentation externe :</b> elle survient lorsqu'on dispose d'une partie libre de la mémoire dont la taille est inférieure à la taille du processus.
</p><p>Exemples de techniques pour réduire la fragmentation :
</p><p>L'architecture interne de <a href="Malloc" title="Malloc">malloc</a> a été conçue pour réduire la fragmentation de la mémoire vive. Il y a plusieurs <span class="lang-en" lang="en"><i>pools</i></span> de tampon, chaque <span class="lang-en" lang="en"><i>pool</i></span> correspond à une taille de tampon différente. Il y aura un <span class="lang-en" lang="en"><i>pool</i></span> pour les tampons de moins de 100 octets, un autre pour les tampons de 100 à 1 000 octets.
</p>
<div class="mw-heading mw-heading2"><h2 id="Fragmentation_de_paquets">Fragmentation de paquets</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Définition"><span id="D.C3.A9finition"></span>Définition</h3></div>
<p>La fragmentation est une fonctionnalité proposée par les deux versions du <a href="Internet_Protocol" title="Internet Protocol">protocole Internet</a> (<a href="IPv4" title="IPv4">IPv4</a> et <a href="IPv6" title="IPv6">IPv6</a>) permettant de diviser un paquet initial en plus petits morceaux (<a href="Datagramme" title="Datagramme">datagramme</a>) afin que les morceaux résultants puissent être transmis par une liaison avec une unité de transmission maximale plus petite que la taille du paquet original.
</p>
<div class="mw-heading mw-heading3"><h3 id="Avec_IPv4">Avec IPv4</h3></div>
<p>Dans <a href="IPv4" title="IPv4">IPv4</a>, le datagramme IP est fragmenté en plus petites parties appelés fragments. Chaque fragment est ensuite encapsulé dans une trame de <a href="Couche_liaison_de_donn%C3%A9es" title="Couche liaison de données">couche de liaison</a> séparée et envoyé ensuite sur la liaison sortante. Comme le réassemblage d'un paquet dans un <a href="Routeur" title="Routeur">routeur</a> créerait de nombreux problèmes, les fragments sont assemblés grâce à l'hôte récepteur. L'hôte doit déterminer si les fragments sont originaux ou s'ils sont extraits d'un plus grand. Pour réassembler ces fragments, l'en-tête du datagramme IP contient une identification, un drapeau et des champs de décalage de fragmentation.
</p><p>Lorsqu'un routeur a besoin de fragmenter, chaque fragment est marquée avec l'adresse source, l'adresse de destination et le numéro d'identification. Lorsque la destination reçoit une série envoyé par même hôte, elle peut examiner les numéros d'identification pour déterminer lesquels sont en fait des fragments. Comme l'IP est un service peu fiable, un ou plusieurs des fragments peuvent ne jamais arriver à destination. Ainsi, pour que l'hôte de destination soit sûr d'avoir reçu le dernier fragment d'origine, le dernier fragment a un bit indicateur réglé à 0, alors que tous les autres fragments ont ce bit indicateur réglé à 1. De plus, pour que l'hôte de destination puisse déterminer si un fragment est manquant et réassembler les paquets, le champ de décalage est utilisé pour spécifier où le fragment se situe dans le datagramme IP d'origine.
</p><p><br>
</p>
<div class="mw-heading mw-heading3"><h3 id="Avec_IPv6">Avec IPv6</h3></div>
<p>Contrairement à <a href="IPv4" title="IPv4">IPv4</a>, <a href="IPv6" title="IPv6">IPv6</a> ne permet pas la fragmentation au niveau des routeurs intermédiaires car il s'agit d'une opération qui prend du temps. La fragmentation et le réassemblage ne sont autorisés que pour la source et la destination. Si une route reçoit un datagramme <a href="IPv6" title="IPv6">IPv6</a> trop important pour être transmis. Le routeur laisse simplement tomber le paquet et envoie un message ICMP "PACKET TOO BIG" à l'expéditeur. L'expéditeur renverra les données en utilisant une taille de datagramme IP plus petite.
</p>
<div class="mw-heading mw-heading3"><h3 id="Faille">Faille</h3></div>
<p>Plus connu sous le nom de
Teardrop Attack<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>, Bonkou encore Boink, cette attaque utilise une faille propre à certaines piles TCP/IP. Cette vulnérabilité concerne la gestion de la fragmentation IP. Ce problème apparaît lorsque la pile reçoit le deuxième fragment d’un paquet TCP contenant comme donnée le premier fragment. La pile TCP/IP peut s’avérer incapable de gérer cette exception et le reste du trafic. Cette faille est très connue sur les piles de Windows 95 et 98.
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Références"><span id="R.C3.A9f.C3.A9rences"></span>Références</h3></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://severino.free.fr/archives/copieslocales/piegedanslecyberespace.html">Article de R. Di Cosmo expliquant la fragmentation d'un disque dur par l'exemple d'une armoire à tiroirs</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://www.commentcamarche.net/contents/45-attaque-teardrop">Teardrop Attack sur le site commentcamarche</a></span>
</li>
</ol></div>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><a href="D%C3%A9fragmentation_(informatique)" title="Défragmentation (informatique)">Défragmentation (informatique)</a></li>
<li><a href="Ramasse-miettes_(informatique)" title="Ramasse-miettes (informatique)">Ramasse-miettes</a></li>
<li><a href="Utilitaire_de_compression_de_disque" title="Utilitaire de compression de disque">Utilitaire de compression de disque</a></li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2023-05-20" href="https://fr.wikipedia.org/wiki/?title=Fragmentation_(informatique)&oldid=204446895">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>